RS-232C(シリアル)経由でX680x0とLinuxをppp接続する方法 ver1.10 written by Mitsuky 最近のPC-UNIXの普及ぶりは目ざましく、X680x0ユーザーの間でも PC/AT機を 組み立ててPC-UNIXをインストールして使っている方も多いと聞きます。そこで 問題になるのがX680x0<->PC-UNIX間のファイル転送。一般的に、ファイル転送の 手段としては以下の3種類が知られています。 1)3.5inchフロッピーによる転送 X680x0 に外付け3.5inchFDドライブを増設、もしくはCompactXVIの内 蔵ドライブを改造し、1.44M対応してファイルを転送する。 3.5inchFD ドライブの入手が困難(もしくは自作する必要がある)、 CompactXVI の場合は本体改造が必要となるのが問題。 2)MOによる転送 X680x0とPC/ATの双方にMOドライブを付け、FIM.XでIBMフォーマット したMOを使用して転送する。MOドライブを2台用意しなければならない のが欠点か。 3)Neptune-Xによる接続 有志制作によるX680x0用ネットワークボードNeptune-Xを使用して Ethernet経由でファイルを転送する。Neptune-Xの入手さえできればディ スクの入れ換えも不要で手軽な方法。 等々色々な方法がありますが、ハードの入手が困難もしくは高価だったりディ スクの入れ換えが面倒だったりと、これまでは決定打と言えるようなものがあり ませんでした。  そこで今回は安くてそれなりに手軽な方法である、 4)RS-232C(シリアル)ケーブルを使ってpppで接続する 双方をクロスケーブルで接続しpppでIP接続を行う。あとはftpや httpでファイル転送を行う。 について解説します。今回はPC-UNIXの一例としてLaser5 Linux6.4 ftp版を使 用しました。他のディストリビューションではファイルの位置(パス)が微妙に 違っている可能性があるので、そのような場合は適宜読みかえて下さい。特殊な 事は行っていないため他のPC-UNIX(NetBSD等)でも応用が効くでしょう。  それではまずハードウェア的な接続から始めます。 ● RS-232Cケーブルで接続する まずはX680x0のRS-232C端子とPC/AT機のシリアル端子をクロスケーブルで接続 します(とりあえずここではRS-232C=シリアルと考えて下さい)。 X680x0側は25ピン、PC/AT機側は9ピンであるため25ピン<->9ピンのケーブルを 用意します。また、今回のようにパソコン同士を接続する場合はストレートケー ブルではなく、クロスケーブルを使用します。モデム等に付属しているケーブル はストレートケーブルですのでそのままでは使えません。 25ピン<->9ピンのクロスケーブルとなるとなかなか売っていないため、25ピン <->9ピンの変換コネクタ、クロス変換アダプタ等を併用するのが良いでしょう。 ● コンソールで接続を確認する 接続が終わったらまずは相手側のコンソールに文字を表示してみます。  まずはX680x0側のRS-232Cを以下のように設定します。 ---- X680x0 ---- bps :9600 parity :none bit :8 Stop Bit:1 Flow :rts/cts flow ---------------- Human68Kの場合RS-232CはデバイスAUXでアクセスできますが、同様にLinuxで は/dev/ttyS0でアクセスできます。PC/AT機にシリアルポートが複数ある場合、 /dev/ttyS0、/dev/ttyS1…のようにデバイスファイルが割り当てられますので適 宜読み替えて下さい。  Linuxでは/dev/ttyS0にアクセスする場合、管理者権限が必要となりますので su で root になって下さい。 ---- Linux ---- $ su Password : <- パスワードを入力 # ---------------  以下 root で作業するものとします。  それではまず X680x0 -> PC/AT へ文字列を転送してみましょう。 ---- PC/AT ---- # cat /dev/ttyS0 --------------- ---- X680x0 ---- A> echo test > AUX ---------------- まずPC/AT側で/dev/ttyS0を読み出します。次にX680x0側で文字列"test"をAUX に書き出します。成功すればPC/AT側のコンソールに、 ---- PC/AT ---- test --------------- という文字列が表示されます。  今度は反対に PC/AT -> X680x0 へ文字列を転送してみます。 ---- X680x0 ---- A> type AUX ---------------- ---- PC/AT ---- # echo test > /dev/ttyS0 --------------- X680x0側でAUXを読み出します。次にPC/AT側で文字列"test"を/dev/ttyS0 に 書き出します。成功すればX680x0側のコンソールに、 ---- X680x0 ---- test ---------------- という文字列が表示されます。ここまで表示できればX680x0とPC/AT機のハー ドウェア的な接続は成功です。  うまくいかない場合は以下の点をチェックして下さい。 ・ケーブルは正しく接続されているか? ・クロスケーブルを使用しているか? ・転送速度、パリティ他はあっているか? ・デバイス名は/dev/ttyS0であっているか? ● TCP/IPドライバを常駐する pppを使用する前にX680x0をTCP/IPが使用できる状態にします。ここでは既に 一通りソフトがインストールされ、Lynx等でインターネット上のファイルが閲覧 できる環境になっているものとして話を進めます。激光電脳倶楽部5号を利用す ると比較的簡単に環境が整うでしょう。 では今回使用するIPアドレスとホスト名を/etc/hostsに記述します。 ---- X680x0 /etc/hosts ---- 127.0.0.1 localhost 192.168.0.1 ecoco 192.168.0.2 pengo 192.168.0.10 x68060 ----------------------------- ---- Linux /etc/hosts ---- 127.0.0.1 localhost 192.168.0.1 ecoco 192.168.0.2 pengo 192.168.0.10 x68060 -------------------------- /etc/hostsはHuman68kとLinuxで同一内容にしておきます。IPアドレスを動的 に設定する方法(DHCP)もありますが、現在X680x0用のDHCPクライアントが存在し ないため、/etc/hostsで静的に指定します。 IPアドレスは本来はJPNIC(日本国内でIPアドレスを発行・管理している組織) に申請して発行してもらうのが本式ですが、個人で家庭内で使うぶんにはプライ ベートIPアドレス(個人が勝手に使っても良いアドレス)である192.168.0.1か らを使うのが簡単で良いでしょう。上記の例では自分自身を表すlocalhostの他 に Linuxマシンecoco/pengo、そしてx68060のIPアドレス/ホスト名を記述して あります。 今ここでは192.168.0.10のx68060と192.168.0.1のecocoを接続するものとして 話を進めます。 ではTCP/IPドライバを常駐します。inetd.x/hinetd.x/xip.xがありますが、今 回はxip.xを使用しました。 ---- X680x0 ---- A>xip X680x0 IP driver xip.x β5 Modified by K.Shirakata. A> ---------------- ● pppで接続する pppはPoint-to-Point Protocolの略で、インターネットで使用されるTCP/IP接 続を1対1のホスト同士で行うためのプロトコルです。一般的にはモデム経由で 個人のパソコンとプロバイダを接続するために用いられていますが、pppは「シ リアル経由でIPパケットを送受信する」ためのプロトコルなので、今回のような 用途でも使用することが可能です。  まずX680x0側から。~/conf.ppp の最後に以下の行を加えます。 ---- conf.ppp ---- pppclient: set debug chat disable lqr disable vjcomp deny vjcomp disable pred1 deny chap disable chap accept pap disable pap set authname ppp-mitsuky set authkey ppp-password set speed 9600 set ifaddr 192.168.0.10 192.168.0.1 set openmode active dial ------------------ 設定についていくつか解説します。 pppclient:はラベルで、ppp起動時にコマンドラインでラベルを指定するとこ の部分を実行します。  enable/disable、accept/denyはpppのマニュアルによると、 ----PPPのマニュアルより---- enable こちら側から相手側に対するオプションの利用の提案を許可します。 disable こちら側から相手側に対するオプションの利用の提案を禁止します。 accept 相手側からのオプションの利用の提案を受け付けます。 deny 相手側からのオプションの利用の提案を拒否します。 ---------------------------  となっています。 chap/papは認証方式(平たく言うとパスワード確認方式)です。ここでは accept papですので「Linux側からpapでパスワードを確認するよう求められるの で、こちら側はそれに答える」事を意味します。authnameはpap認証で使用する ユーザー名(アカウント)、authkeyはpap認証で使用するパスワードです。ここ ではそれぞれppp-mitsuky、ppp-passwordとしています。これは普段Linuxにログ インする時のユーザー名/パスワードとは別物です。同じ物にすることもできま すが、そうするとconf.pppにLinuxのパスワードを平文で書かなければならなく なるため、お勧めしません。 set speedは転送速度(ここでは9600bps)、set ifaddrは自分のIPアドレスと 相手のIPアドレスを指定します。IPアドレスの指定は先ほどの/etc/hostsと矛盾 しないようにして下さい。 次にLinux側。/etc/ppp/pap-secretsに先ほどのユーザー名/パスワードを書 き込みます。 ----pap-secrets---- # Secrets for authentication using PAP # client server secret IP addresses ppp-mitsuky * ppp-password 192.168.0.10 ------------------- clientはpppで接続を受け付けるユーザー名、serverは「どのサーバーでも受 け付ける」事を意味する'*'、secretはパスワード、そして接続先(ここでは X680x0側)のIPアドレスを書き込みます  ではpppを実行します。 ---- X680x0 ---- A>ppp pppclient User Process PPP. Written by Toshiharu OHNO. X68K porting by Kentaro SHIRAKATA. Log level is 02 Interactive mode dial OK! login OK! ppp> Packet mode. ppp> ---------------- 次にLinux側。以下のようにコマンドラインから打ち込みます。 ---- Linux ---- # /usr/sbin/pppd /dev/ttyS0 9600 local 192.168.0.1:192.168.0.10 require-pap ---------------  /dev/ttyS0は使用するシリアルポート、通信速度は9600bpsです。 ここでのポイントはlocalです。通常、モデムを相手に接続する場合キャリア が上がったら接続を開始するのですが、パソコン同士をクロスケーブルで接続す るような場合はこのような動作は不要なので、localを指定するようにします。 IPアドレスは自分:相手の順に":"で区切って指定します。Linux側から見ると 「自分」は 192.168.0.1 になることに注意して下さい。  require-papは「相手にpap認証を要求する」ことを意味します。  以上を実行するとX680x0のppp>が大文字になります。 ---- X680x0 ---- PPP> SetIpDevice PPP process kept. A> ---------------- これでX680x0とPC/AT機の間でppp接続が行われ、TCP/IPで通信できるようにな りました。pingで確認しましょう。 ---- X680x0 ---- A> ping ecoco PING ecoco (192.168.0.1): 56 data bytes 64 bytes from ecoco: icmp_seq=0 time=60 ms 64 bytes from ecoco: icmp_seq=1 time=30 ms 64 bytes from ecoco: icmp_seq=2 time=50 ms ^C --- ecoco ping statistics --- 3 packets transmitted, 3 packets received, 0.00% packet loss round-trip min/avg/max = 30/46.67/60 ms ---------------- pingは^Cで止めることができます。メッセージを見ると「パケットを3つ転送 して3つ受信した。失われたパケットは0パーセントです」と表示されています。  うまくいかない場合は以下の点をチェックして下さい。 ・ppp>が大文字にならない 一旦quitと入力してpppを終了し、改めてpppを起動するとうまくいく 事があります。また、Linuxのpppdはしばらく接続が無いと(15秒くら い?)終了(常駐解除)してしまうため、pppdを改めて実行して下さい。 pppdが実行中かどうかは以下のコマンドで調べられます。 # ps ax | grep pppd ・pppdが無いと言われる /usr/sbin以外の場所にあるかもしれません。また、ppxp等がインス トールされている場合はそちらのマニュアルを見て、適宜置き換えて使 用して下さい。 また、Linux側ではエラーメッセージが/var/log/messagesに記録されています ので、これを参考にするのも良いでしょう。 ● ftpf.xでファイルを転送する ftpクライアントftpf.xでファイル転送を行ってみます。前提としてLinux側で ftpサーバーが動作していることが必要です。最近のLinuxディストリビューショ ンではそのままではftpサーバーが動作していないので(セキュリティのためか?)、 各自インストールして下さい。Laser5 Linux6.4ではwu-ftpdという名前の.rpm がftpサーバーです。  それでは実行してみます。 ---- X680x0 ---- 2000-11-21 (火) 23:20:02D:/home/work/ftpf % ./ftpf.x ecoco c:/ ホスト ecoco に接続します 接続中... 接続成功! ユーザー名を入力して下さい >mitsuky パスワードを入力して下さい >******** 接続しました ---------------- ユーザー名/パスワードはあなたのLinux上でのものを入力して下さい。毎回 入力するのが面倒な場合はバッチファイルにして-u/-pオプションで指定するこ ともできますが、パスワードをバッチファイルに記述するのは危険ですので十分 注意して使って下さい。 ● Lynx/WebXpressionで接続する Linux上でWebサーバーが動作している場合Webブラウザでのアクセスも可能で す。 ---- X680x0 ---- A>Lynx http://ecoco/index.html A>WebXpression http://ecoco/index.html ----------------  Linux上のページを閲覧することができます。 ● 転送速度を高速化する ・本体のみの場合 tmsio.xやbsio.x(ともにフリーソフトウェア)のような高速RS-232Cドライバ を使用すると転送速度を改善することができます。ここではbsio.xを使用してみ ます。 conf.pppで転送速度を指定している部分を書き替えます。bsio.xを使用すると 38400bpsまで速度を上げることが可能です。 ---- conf.ppp ---- set speed $9 ------------------ pppで19200bps以上の値を指定する場合は$数値という形式で記述します(詳細 はpppのマニュアル、設定値についてはtmsio.xのマニュアルを参照のこと)。こ の$9は38400bpsを意味します。  次にbsio.xを常駐します。 ---- X680x0 ---- Original>TMSIO version 0.31 Copyright (C) 1990-93 by Miki Hoshino Rewrite >BSIO version 0.21 Copyright (C) 1994 By BAZU BSIOが常駐しました ハードフロー制御、ダイレクトコールが可能です SCC 5MHzモードで初期化しました ----------------  その後、同様にxip、pppを常駐します。  Linux側での速度指定も変更します。 ---- Linux ---- # /usr/sbin/pppd /dev/ttyS0 38400 local 192.168.0.1:192.168.0.10 require-pap --------------- これで38400bpsでの通信が可能になります。ftpf.xによる実測値では3500バイ ト/秒程度の転送速度が出せるようです。そうそう、既にppp/pppdが常駐してい る場合はそれぞれ常駐解除してから実行して下さい。 ・高速RS-232Cボードを使用する場合 有志による高速RS-232CボードPSX16550/PSX16750をお持ちの方はさらに高速な 転送が行えます。この場合転送速度を115200bpsまで上げることが可能です。こ こではPSX16550を使用してみます。 conf.pppを書き替えます。115200bpsは$cです。 ---- conf.ppp ---- set speed $c ------------------  付属のドライバpsxio.xを常駐します。 ---- X680x0 ---- Original>TMSIO version 0.31 Copyright (C) 1990-93 by Miki Hoshino Rewrite >BSIO version 0.21 Copyright (C) 1994 By BAZU Rewrite >PSXIO base version Copyleft (^^) 1995 N.Higashino / Project PSX :-) PSXIOを常駐しました ---------------  その後、同様にxip、pppを常駐します。 ---- Linux ---- # /usr/sbin/pppd /dev/ttyS0 115200 local 192.168.0.1:192.168.0.10 require-pap --------------- おなじく実測で10500バイト/秒の転送速度が出ました。 ● 改変履歴 2000/12/01 ver1.00 ・初版。 2001/01/04 ver1.10 ・pap認証を使うようにした。 ● 参考文献  PPP.Xに同梱のマニュアル (EOF)